﻿using Swimj.ApplicationLib.Entities;
using System.Diagnostics.CodeAnalysis;

namespace DataServer.ApplicationLib.Entities
{
    public class ReportFieldEntity : AuditableEntity
    {
        /// <summary>
        /// 
        /// </summary>
        public string? ReportId { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// 
        [NotNull]
        public string? FieldName { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? DisplayName { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? AliasName { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? FieldDesc { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? DataType { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? DisplayDataFormatter { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public bool IsSearchCriteria { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public bool IsDimensionField { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? DimensionId { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? SearchInputType { get; set; }

        public string? Status { get; set; }
        public int SortNum { get; set; }
        public bool DisplayHidden { get; set; }
        public int DisplayWidth { get; set; }
        public string? LinkFormatter { get; set; }
        public bool DisplayFrozen { get; set; }
        public string? RefAlias { get; set; }
        public string? CategoryId { get; set; }
        public string? Formula { get; set; }
        public string? FormulaDisplay { get; set; }
        public string? SummaryType { get; set; }
        public DateTime Stamp { get; set; }
        public long FieldId { get; set; }
        public string? ExtDict { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? SearchLogicFormat { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? SearchLogicOp { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public bool IsGroupBy { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? InitialValue { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string? LinkFilterInfo { get; set; }
    }
}